package br.com.rampage.model.bo;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.hibernate.criterion.Restrictions;

import br.com.rampage.model.bean.Aplicacao;
import br.com.rampage.model.bean.Carteira;
import br.com.rampage.model.bean.Paciente;
import br.com.rampage.model.bean.UnidadeSaude;
import br.com.rampage.model.bean.Vacina;
import br.com.rampage.model.dao.AplicacaoDao;
import br.com.rampage.model.dao.FactoryDao;
import br.com.rampage.utils.HibernateUtil;

public class AplicacaoBO {

	private AplicacaoDao dao;

	public AplicacaoBO() {
		dao = FactoryDao.getAplicacao();
	}

	public boolean cadastrar(String dose, String nomeVacina, Integer id,
			String cpf) {

		if (dose.equals("") || dose == null) {
			return false;
		}

		Paciente paciente = (Paciente) HibernateUtil.openSession()
				.createCriteria(Paciente.class)
				.add(Restrictions.eq("cpf", cpf)).uniqueResult();
		Carteira carteira = paciente.getCarteira();

		Vacina vacina = (Vacina) HibernateUtil.openSession()
				.createCriteria(Vacina.class)
				.add(Restrictions.eq("nome", nomeVacina)).uniqueResult();

		UnidadeSaude u = (UnidadeSaude) HibernateUtil.openSession()
				.createCriteria(UnidadeSaude.class)
				.add(Restrictions.eq("codUnidadeSaude", id)).uniqueResult();

		Date dataAtual = new Date();
		SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
		dataAtual = new Date(f.format(dataAtual));

		Aplicacao a = new Aplicacao();
		a.setDataAplicacao(dataAtual);
		a.setCarteira(carteira);
		a.setDose(dose);
		a.setVacina(vacina);
		a.setUnidade(u);

		u.getAplicacoes().add(a);
		vacina.getAplicacoes().add(a);
		carteira.getAplicacoes().add(a);

		dao.salvar(a);

		return true;
	}

}
